123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 |
- /*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
- /* $Id$ */
-
- package org.apache.fop.intermediate;
-
- import java.io.File;
- import java.io.IOException;
-
- import javax.xml.XMLConstants;
- import javax.xml.transform.Result;
- import javax.xml.transform.Templates;
- import javax.xml.transform.Transformer;
- import javax.xml.transform.dom.DOMResult;
- import javax.xml.transform.dom.DOMSource;
- import javax.xml.transform.sax.SAXResult;
- import javax.xml.validation.Schema;
- import javax.xml.validation.SchemaFactory;
- import javax.xml.validation.Validator;
-
- import org.w3c.dom.Document;
-
- import org.xml.sax.ErrorHandler;
- import org.xml.sax.SAXException;
- import org.xml.sax.SAXParseException;
-
- import org.apache.fop.apps.FOUserAgent;
- import org.apache.fop.apps.Fop;
- import org.apache.fop.render.intermediate.IFContext;
- import org.apache.fop.render.intermediate.IFDocumentHandler;
- import org.apache.fop.render.intermediate.IFSerializer;
-
- /**
- * A common super-class for intermediate format test cases.
- */
- abstract class AbstractIFTest extends AbstractIntermediateTest {
-
- private static final Schema IF_SCHEMA;
-
- static {
- Schema ifSchema = null;
- try {
- SchemaFactory sFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
- sFactory.setErrorHandler(new ErrorHandler() {
-
- public void error(SAXParseException exception) throws SAXException {
- throw exception;
- }
-
- public void fatalError(SAXParseException exception) throws SAXException {
- throw exception;
- }
-
- public void warning(SAXParseException exception) throws SAXException {
- throw exception;
- }
-
- });
- File ifSchemaFile = new File(
- "src/documentation/intermediate-format-ng/fop-intermediate-format-ng.xsd");
- ifSchema = sFactory.newSchema(ifSchemaFile);
- } catch (IllegalArgumentException iae) {
- System.err.println("No suitable SchemaFactory for XML Schema validation found!");
- } catch (SAXException e) {
- throw new ExceptionInInitializerError(e);
- }
- IF_SCHEMA = ifSchema;
- }
-
- /**
- * Creates a new test case.
- *
- * @param testFile the file containing the document and the tests
- * @throws IOException if an I/O error occurs while loading the test case
- */
- public AbstractIFTest(File testFile) throws IOException {
- super(testFile);
- }
-
- @Override
- protected String getIntermediateFileExtension() {
- return ".if.xml";
- }
-
- @Override
- protected Document buildIntermediateDocument(Templates templates) throws Exception {
- Transformer transformer = templates.newTransformer();
- setErrorListener(transformer);
-
- //Set up XMLRenderer to render to a DOM
- DOMResult domResult = new DOMResult();
-
- FOUserAgent userAgent = createUserAgent();
-
- //Create an instance of the target renderer so the XMLRenderer can use its font setup
- IFDocumentHandler targetHandler = userAgent.getRendererFactory().createDocumentHandler(
- userAgent, getTargetMIME());
-
- //Setup painter
- IFSerializer serializer = new IFSerializer(new IFContext(userAgent));
- serializer.mimicDocumentHandler(targetHandler);
- serializer.setResult(domResult);
-
- userAgent.setDocumentHandlerOverride(serializer);
-
- Fop fop = fopFactory.newFop(userAgent);
- Result res = new SAXResult(fop.getDefaultHandler());
- transformer.transform(new DOMSource(testDoc), res);
-
- return (Document) domResult.getNode();
- }
-
- @Override
- protected void validate(Document doc) throws SAXException, IOException {
- if (IF_SCHEMA == null) {
- return; //skip validation;
- }
- Validator validator = IF_SCHEMA.newValidator();
- validator.setErrorHandler(new ErrorHandler() {
-
- public void error(SAXParseException exception) throws SAXException {
- throw exception;
- }
-
- public void fatalError(SAXParseException exception) throws SAXException {
- throw exception;
- }
-
- public void warning(SAXParseException exception) throws SAXException {
- //ignore
- }
-
- });
- validator.validate(new DOMSource(doc));
- }
-
- }
|