Package

Source Code of XSLTValidate

/************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* Copyright 2008 by Sun Microsystems, Inc.
*
* OpenOffice.org - a multi-platform office productivity suite
*
* $RCSfile: XSLTValidate.java,v $
* $Revision: 1.5 $
*
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License version 3
* only, as published by the Free Software Foundation.
*
* OpenOffice.org 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 version 3 for more details
* (a copy is included in the LICENSE file that accompanied this code).
*
* You should have received a copy of the GNU Lesser General Public License
* version 3 along with OpenOffice.org.  If not, see
* <http://www.openoffice.org/license.html>
* for a copy of the LGPLv3 License.
*
************************************************************************/


import com.sun.star.comp.loader.FactoryHelper;
import com.sun.star.lang.XInitialization;
import com.sun.star.lang.XMultiServiceFactory;
import com.sun.star.lang.XServiceInfo;
import com.sun.star.lang.XServiceName;
import com.sun.star.lang.XSingleServiceFactory;
import com.sun.star.lang.XTypeProvider;
import com.sun.star.registry.XRegistryKey;
import com.sun.star.uno.Type;
import java.util.Enumeration;
import java.util.Vector;
import java.io.InputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ByteArrayOutputStream;
import com.sun.star.xml.XImportFilter;
import com.sun.star.xml.XExportFilter;
import java.io.*;

// Imported TraX classes
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.dom.DOMSource;
//import javax.xml.transform.dom.DOMResult;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import javax.xml.transform.URIResolver;
import javax.xml.transform.Source;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.xml.sax.ErrorHandler;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
import org.xml.sax.SAXNotRecognizedException;
import org.xml.sax.SAXNotSupportedException;
import org.xml.sax.ErrorHandler;
import org.xml.sax.helpers.XMLFilterImpl;

import com.sun.star.uno.AnyConverter;
import com.sun.star.lang.XMultiServiceFactory;
import com.sun.star.lang.XServiceInfo;
import com.sun.star.lang.XTypeProvider;
import com.sun.star.uno.Type;
import com.sun.star.uno.UnoRuntime;
import com.sun.star.comp.loader.FactoryHelper;
import com.sun.star.lang.XServiceName;
import com.sun.star.lang.XSingleServiceFactory;
import com.sun.star.registry.XRegistryKey;
import com.sun.star.frame.XConfigManager;
import com.sun.star.xml.sax.InputSource;
import com.sun.star.xml.sax.XParser;
import com.sun.star.io.XInputStream;
import com.sun.star.io.XOutputStream;
import com.sun.star.xml.sax.XDocumentHandler;

//Uno to java Adaptor
import com.sun.star.lib.uno.adapter.*;

/** This outer class provides an inner class to implement the service
* description, a method to instantiate the
* component on demand (__getServiceFactory()), and a method to give
* information about the component (__writeRegistryServiceInfo()).
*/
public class XSLTValidate {

    private static XMultiServiceFactory xMSF;
    private static Vector parseErrors =new Vector();

    /** This inner class provides the component as a concrete implementation
     * of the service description. It implements the needed interfaces.
     * @implements XTypeProvider
     */
    static public class _XSLTValidate implements
    XImportFilter,
        XServiceName,
        XServiceInfo,
    ErrorHandler,
        XTypeProvider {

    private com.sun.star.xml.sax.XErrorHandler xErrorHandler;
       
        /** The component will be registered under this name.
         */
        static private final String __serviceName = "com.sun.star.documentconversion.XSLTValidate";
       
    public _XSLTValidate() {
      xErrorHandler = null;
    }

        public com.sun.star.uno.Type[] getTypes() {
            Type[] typeReturn = {};

            try {
                typeReturn = new Type[] {
                new Type( XTypeProvider.class ),
                new Type( XExportFilter.class ),
        new Type( XImportFilter.class ),
                new Type( XServiceName.class ),
                new Type( XServiceInfo.class ) };
            }
            catch( Exception exception ) {
   
            }

            return( typeReturn );
        }


  public boolean importer(com.sun.star.beans.PropertyValue[] aSourceData,
        com.sun.star.xml.sax.XDocumentHandler xDocHandler,
        java.lang.String[] msUserData) throws com.sun.star.uno.RuntimeException,com.sun.star.lang.IllegalArgumentException {
 
      com.sun.star.io.XInputStream xis=null;
      com.sun.star.beans.PropertyValue[] pValue = aSourceData;
    for  (int  i = 0 ; i < pValue.length; i++)
    {
      try{
        //System.out.println("\n"+pValue[i].Name+" "+pValue[i].Value);
        if (pValue[i].Name.compareTo("InputStream")==0){
          xis=(com.sun.star.io.XInputStream)AnyConverter.toObject(new Type(com.sun.star.io.XInputStream.class), pValue[i].Value);
        }
        else if (pValue[i].Name.compareTo("ErrorHandler")==0){
          xErrorHandler=(com.sun.star.xml.sax.XErrorHandler)AnyConverter.toObject(new Type(com.sun.star.xml.sax.XErrorHandler.class), pValue[i].Value);
        }
      }
      catch(com.sun.star.lang.IllegalArgumentException AnyExec){
        System.out.println("\nIllegalArgumentException "+AnyExec);
      }
    }
    try{
      convert (xis);
    }
    catch (Exception AnyExec){
      throw new com.sun.star.uno.RuntimeException(AnyExec.getMessage());
    }
    return true;
  }

   public void convert (com.sun.star.io.XInputStream xml) throws com.sun.star.uno.RuntimeException {
       XInputStreamToInputStreamAdapter xis =new XInputStreamToInputStreamAdapter(xml);  
       parseErrors =new Vector();
           //String defaultTimeOut = System.getProperty("sun.net.client.defaultConnectTimeout");
           System.getProperties().setProperty("sun.net.client.defaultConnectTimeout", "10000");
       try{
       DocumentBuilderFactory dFactory = DocumentBuilderFactory.newInstance();
       dFactory.setNamespaceAware(true);
       dFactory.setValidating(true);
       DocumentBuilder dBuilder = dFactory.newDocumentBuilder();
       dBuilder.setErrorHandler(this);
       dBuilder.parse(xis);
       if (parseErrors.size()>0){
         String errString ="";
         for (Enumeration e = parseErrors.elements() ; e.hasMoreElements() ;) {
          errString+=e.nextElement();
          //System.out.println(e.nextElement());
         }
         throw new com.sun.star.uno.RuntimeException(errString);
       }
       }
      catch (Exception e){
       //System.out.println("\nException "+ e);
       throw new com.sun.star.uno.RuntimeException(e.getLocalizedMessage());
      }
   }

  public com.sun.star.uno.Any JavaSAXParseEceptionToUno( SAXParseException e )
  {
    com.sun.star.uno.XInterface xContext = null;

    String aMessage = e.getMessage();
    if( aMessage == null )
      aMessage = new String();

    String aPublicId = e.getPublicId();
    if( aPublicId == null )
      aPublicId = new String();

    String aSystemId = e.getSystemId();
    if( aSystemId == null )
      aSystemId = new String();

    return new com.sun.star.uno.Any( new Type(com.sun.star.xml.sax.SAXParseException.class),
          new com.sun.star.xml.sax.SAXParseException( aMessage,
          xContext,
          com.sun.star.uno.Any.VOID,
          aPublicId,
          aSystemId,
          e.getLineNumber(),
          e.getColumnNumber() ) );

  }

  //  Warning Event Handler
  public void warning (SAXParseException e)
      throws SAXException
  {
//    System.out.println("\n_XSLTValidate::warning " + e.toString() );

    if( xErrorHandler != null )
    {
      try
      {
        xErrorHandler.warning( JavaSAXParseEceptionToUno( e ) );
      }
      catch( com.sun.star.xml.sax.SAXException ex )
      {
        throw e;
      }
    }
    else
    {

      //System.err.println ("Warning:  "+e);
      try{
        //parseErrors.write (("\n"+e.getMessage()).getBytes());
      }
      catch(Exception genEx){
        //System.out.print("\n Error while writing ParseErrors"+genEx);
      }
    }
  }
 
  //  Error Event Handler
  public void error (SAXParseException e)
    throws SAXException
  {
//    System.out.println("\n_XSLTValidate::error " + e.toString() );

    if( xErrorHandler != null )
    {
      try
      {
        xErrorHandler.error( JavaSAXParseEceptionToUno( e ) );
      }
      catch( com.sun.star.xml.sax.SAXException ex )
      {
        throw e;
      }
    }
    else
    {
      //System.err.println ("Error:  "+e);
      try{
        parseErrors.add (e.getLocalizedMessage()+" "+e.getLineNumber()+" ");
      }
      catch(Exception genEx){
        //System.out.print("\n Error while writing ParseErrors"+genEx);
      }
    }
  }

  //  Fatal Error Event Handler
  public void fatalError (SAXParseException e)
  throws SAXException {
//    System.out.println("\n_XSLTValidate::fatalError " + e.toString() );

    if( xErrorHandler != null )
    {
      try
      {
        xErrorHandler.fatalErrorJavaSAXParseEceptionToUno( e ) );
      }
      catch( com.sun.star.xml.sax.SAXException ex )
      {
        throw e;
      }
    }
    else
    {
      //System.err.println ("Fatal Error:  "+e);
      try{
        parseErrors.add (e.getLocalizedMessage()+" "+e.getLineNumber()+" ");
      }
      catch(Exception genEx){
        //System.out.print("\n Error while writing ParseErrors"+genEx);
      }
    }
  }
 
        // Implement methods from interface XTypeProvider
        public byte[] getImplementationId() {
            byte[] byteReturn = {};

            byteReturn = new String( "" + this.hashCode() ).getBytes();

            return( byteReturn );
        }

        // Implement method from interface XServiceName
        public String getServiceName() {
            return( __serviceName );
        }
   
        // Implement methods from interface XServiceInfo
        public boolean supportsService(String stringServiceName) {
            return( stringServiceName.equals( __serviceName ) );
        }
   
        public String getImplementationName() {
            return( _XSLTValidate.class.getName() );
        }
   
        public String[] getSupportedServiceNames() {
            String[] stringSupportedServiceNames = { __serviceName };
            return( stringSupportedServiceNames );
        }
    }

    /**
     * Returns a factory for creating the service.
     * This method is called by the <code>JavaLoader</code>
     *
     * @return  returns a <code>XSingleServiceFactory</code> for creating the
     *          component
     *
     * @param   implName     the name of the implementation for which a
     *                       service is desired
     * @param   multiFactory the service manager to be used if needed
     * @param   regKey       the registryKey
     *
     * @see                  com.sun.star.comp.loader.JavaLoader
     */
    public static XSingleServiceFactory __getServiceFactory(String implName,
    XMultiServiceFactory multiFactory,
    XRegistryKey regKey) {
        XSingleServiceFactory xSingleServiceFactory = null;
        xMSF= multiFactory;
        if (implName.equals(_XSLTValidate.class.getName()) ) {
            xSingleServiceFactory = FactoryHelper.getServiceFactory(_XSLTValidate.class,
            _XSLTValidate.__serviceName,
            multiFactory,
            regKey);
        }
       
        return xSingleServiceFactory;
    }
   
    /**
     * Writes the service information into the given registry key.
     * This method is called by the <code>JavaLoader</code>
     * <p>
     * @return  returns true if the operation succeeded
     * @param   regKey       the registryKey
     * @see                  com.sun.star.comp.loader.JavaLoader
     */
    public static boolean __writeRegistryServiceInfo(XRegistryKey regKey) {

        return FactoryHelper.writeRegistryServiceInfo(_XSLTValidate.class.getName(),
        _XSLTValidate.__serviceName, regKey);
    }
}
TOP

Related Classes of XSLTValidate

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.
ww.google-analytics.com/analytics.js','ga'); ga('create', 'UA-20639858-1', 'auto'); ga('send', 'pageview');