summaryrefslogtreecommitdiff
path: root/xmlsecurity/tools/demo/JavaFlatFilter.java
blob: 331ace8040722a0b2851b3dbfd3fb3c4d172d531 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
/*************************************************************************
 *
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 *
 * Copyright 2000, 2010 Oracle and/or its affiliates.
 *
 * OpenOffice.org - a multi-platform office productivity suite
 *
 * 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.
 *
 ************************************************************************/

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);
    }
}