blob: 74cef5aa344593501d36495ad47bdba6b2a5dcf9 [file] [log] [blame]
/**************************************************************
*
* 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.
*
*************************************************************/
package com.sun.star.xml.security.eval;
import com.sun.star.registry.XRegistryKey;
import com.sun.star.comp.loader.FactoryHelper;
import com.sun.star.uno.UnoRuntime;
import com.sun.star.xml.sax.InputSource;
import com.sun.star.xml.sax.XDocumentHandler;
import com.sun.star.xml.sax.XParser;
import com.sun.star.xml.sax.XDTDHandler;
import com.sun.star.xml.sax.XEntityResolver;
import com.sun.star.xml.sax.XErrorHandler;
import com.sun.star.xml.sax.XAttributeList;
import com.sun.star.lang.XSingleServiceFactory;
import com.sun.star.lang.XMultiServiceFactory;
import com.sun.star.lang.XTypeProvider;
import com.sun.star.lang.XServiceInfo;
import com.sun.star.lang.Locale;
/*
* the JavaFlatFilter class is a pure java filter, which does nothing
* but forwarding the SAX events to the next document handler.
* The purpose of this class is to calculate the time consumed by
* the UNO C++/Java bridge during exporting/importing.
*/
public class JavaFlatFilter extends Object
implements XDocumentHandler, XParser, XTypeProvider, XServiceInfo
{
XDocumentHandler m_xDocumentHandler;
/* XDocumentHandler */
public void startDocument()
throws com.sun.star.xml.sax.SAXException
{
m_xDocumentHandler.startDocument();
}
public void endDocument()
throws com.sun.star.xml.sax.SAXException
{
m_xDocumentHandler.endDocument();
}
public void startElement (String aName, com.sun.star.xml.sax.XAttributeList xAttribs )
throws com.sun.star.xml.sax.SAXException
{
m_xDocumentHandler.startElement(aName, xAttribs);
}
public void endElement ( String aName )
throws com.sun.star.xml.sax.SAXException
{
m_xDocumentHandler.endElement(aName);
}
public void characters ( String aChars )
throws com.sun.star.xml.sax.SAXException
{
m_xDocumentHandler.characters(aChars);
}
public void ignorableWhitespace ( String aWhitespaces )
throws com.sun.star.xml.sax.SAXException
{
m_xDocumentHandler.ignorableWhitespace(aWhitespaces);
}
public void processingInstruction ( String aTarget, String aData )
throws com.sun.star.xml.sax.SAXException
{
m_xDocumentHandler.processingInstruction(aTarget, aData);
}
public void setDocumentLocator (com.sun.star.xml.sax.XLocator xLocator )
throws com.sun.star.xml.sax.SAXException
{
m_xDocumentHandler.setDocumentLocator(xLocator);
}
/* XParser */
public void parseStream(InputSource strucInputSource)
{
}
public void setDocumentHandler(XDocumentHandler xDocumentHandler)
{
m_xDocumentHandler = xDocumentHandler;
}
public void setDTDHandler(XDTDHandler xHandler)
{
}
public void setEntityResolver(XEntityResolver xResolver)
{
}
public void setErrorHandler(XErrorHandler xHandler)
{
}
public void setLocale(Locale locale)
{
}
/*
* XTypeProvider implementation
* maintain a static implementation id for all instances of JavaFlatFilter
* initialized by the first call to getImplementationId()
*/
protected static byte[] _implementationId;
public com.sun.star.uno.Type[] getTypes()
{
com.sun.star.uno.Type[] retValue = new com.sun.star.uno.Type[4];
/*
* instantiate Type instances for each interface you support and add them to Type[] array
* this object implements XServiceInfo, XTypeProvider and XSignFilter
*/
retValue[0]= new com.sun.star.uno.Type( XServiceInfo.class);
retValue[1]= new com.sun.star.uno.Type( XTypeProvider.class);
retValue[2]= new com.sun.star.uno.Type( XDocumentHandler.class);
retValue[3]= new com.sun.star.uno.Type( XParser.class);
/*
* XInterface is not needed for Java components, the UnoRuntime does its job
*/
return retValue;
}
synchronized public byte[] getImplementationId()
{
if (_implementationId == null) {
_implementationId= new byte[16];
int hash = hashCode(); // hashDode of this object
_implementationId[0] = (byte)(hash & 0xff);
_implementationId[1] = (byte)((hash >>> 8) & 0xff);
_implementationId[2] = (byte)((hash >>> 16) & 0xff);
_implementationId[3] = (byte)((hash >>>24) & 0xff);
}
return _implementationId;
}
/*
* XServiceInfo implementation
* hold the service name in a private static member variable of the class
*/
protected static final String __serviceName = "com.sun.star.xml.crypto.eval.JavaFlatFilter";
public String getImplementationName( )
{
return getClass().getName();
}
public boolean supportsService(String serviceName)
{
boolean rc = false;
if ( serviceName.equals( __serviceName))
{
rc = true;
}
return rc;
}
public String[] getSupportedServiceNames( )
{
String[] retValue= new String[0];
retValue[0]= __serviceName;
return retValue;
}
/* static __getServiceFactory() implementation */
public static XSingleServiceFactory __getServiceFactory(String implName,
XMultiServiceFactory multiFactory,
com.sun.star.registry.XRegistryKey regKey)
{
com.sun.star.lang.XSingleServiceFactory xSingleServiceFactory = null;
if (implName.equals( JavaFlatFilter.class.getName()) )
{
xSingleServiceFactory = FactoryHelper.getServiceFactory( JavaFlatFilter.class,
JavaFlatFilter.__serviceName,
multiFactory,
regKey);
}
return xSingleServiceFactory;
}
/* static __writeRegistryServiceInfo implementation */
public static boolean __writeRegistryServiceInfo(XRegistryKey regKey)
{
return FactoryHelper.writeRegistryServiceInfo( JavaFlatFilter.class.getName(),
__serviceName,
regKey);
}
}