<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module-description PUBLIC "-//StarOffice//DTD ComponentDescription 1.0//EN" "module-description.dtd">
<!--***********************************************************
 * 
 * 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.
 * 
 ***********************************************************-->


<module-description xmlns:xlink="http://www.w3.org/1999/xlink">
    <module-name>	migrationoo2.uno	</module-name>
    <component-description>
        <author> Joachim Lingner </author>
        <name>	com.sun.star.comp.jvmfwk.MigrationOO2</name>
        <description>
Specifies a factory object to create proxy objects.
These proxy object represent a given target object and can be
be aggregated. The proxy objects act UNO conform and do NOT provide
original target interfaces on queryInterface() calls.
</description>
        <loader-name>	com.sun.star.loader.SharedLibrary	</loader-name>
        <language>	C++	</language>
        <status value="final"/>
        <supported-service>	com.sun.star.reflection.ProxyFactory	</supported-service>
        <service-dependency> ... </service-dependency>
        <type>	com.sun.star.lang.XTypeProvider    </type>
        <type>	com.sun.star.lang.XServiceInfo     </type>
        <type>	com.sun.star.lang.XSingleServiceFactory    </type>
        <type>	com.sun.star.lang.XMultiServiceFactory     </type>
	<type>  com.sun.star.lang.XInitialization          </type>
	<type>  com.sun.star.lang.WrappedTargetException </type>
        <type>	com.sun.star.registry.XRegistryKey         </type>
	<type>	com.sun.star.lang.XSingleComponentFactory </type>
        <type>	com.sun.star.task.XJob </type>
        <type>	com.sun.star.beans.NamedValue </type>
        <type>	com.sun.star.configuration.backend.XLayer </type>
        <type>	com.sun.star.configuration.backend.XLayerHandler </type>
        <type>	com.sun.star.configuration.backend.MalformedDataException </type>
	<type>  com.sun.star.configuration.backend.TemplateIdentifier </type>
    </component-description>
    <component-description>
        <author>Thomas Benisch</author>
        <name>com.sun.star.comp.desktop.migration.Basic</name>
        <description>migration service for Apache OpenOffice Basic and dialogs</description>
        <loader-name>com.sun.star.loader.SharedLibrary</loader-name>
        <language>c++</language>
        <status value="final"/>
        <supported-service>com.sun.star.migration.Basic</supported-service>
        <service-dependency>...</service-dependency>
        <type>com.sun.star.beans.NamedValue</type>
        <type>com.sun.star.lang.IllegalArgumentException</type>        
        <type>com.sun.star.lang.XInitialization</type>
        <type>com.sun.star.task.XJob</type>
        <type>com.sun.star.lang.XServiceInfo</type>
        <type>com.sun.star.lang.XTypeProvider</type>
        <type>com.sun.star.uno.XComponentContext</type>
    </component-description>
    <component-description>
        <author>Thomas Benisch</author>
        <name>com.sun.star.comp.desktop.migration.Autocorrection</name>
        <description>migration service for Apache OpenOffice autocorrection</description>
        <loader-name>com.sun.star.loader.SharedLibrary</loader-name>
        <language>c++</language>
        <status value="final"/>
        <supported-service>com.sun.star.migration.Autocorrection</supported-service>
        <service-dependency>...</service-dependency>
        <type>com.sun.star.beans.NamedValue</type>
        <type>com.sun.star.lang.IllegalArgumentException</type>        
        <type>com.sun.star.lang.XInitialization</type>
        <type>com.sun.star.task.XJob</type>
        <type>com.sun.star.lang.XServiceInfo</type>
        <type>com.sun.star.lang.XTypeProvider</type>
        <type>com.sun.star.uno.XComponentContext</type>
    </component-description>
    <project-build-dependency>unotools</project-build-dependency>
    <project-build-dependency>tools</project-build-dependency>
    <project-build-dependency>cppuhelper</project-build-dependency>
    <project-build-dependency>cppu</project-build-dependency>
    <project-build-dependency>sal</project-build-dependency>
    <runtime-module-dependency>utl</runtime-module-dependency>
    <runtime-module-dependency>tl</runtime-module-dependency>
    <runtime-module-dependency>cppuhelper3$(COM)</runtime-module-dependency>
    <runtime-module-dependency>cppu3</runtime-module-dependency>
    <runtime-module-dependency>sal3</runtime-module-dependency>
</module-description>
