<?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>storage</module-name>
    <component-description>
        <author></author>
        <name>drafts.com.sun.star.script.framework.storage.ScriptStorage</name>
        <description></description>
        <loader-name>com.sun.star.loader.SharedLibrary</loader-name>
        <language>c++</language>
        <status value="draft"/>
        <supported-service>drafts.com.sun.star.script.framework.storage.ScriptingStorage</supported-service>
        <type>com.sun.star.beans.XPropertySet</type>
	<type>com.sun.star.beans.XPropertyContainer</type>
        <type>com.sun.star.uno.Exception</type>
        <type>com.sun.star.uno.XComponentContext</type>
        <type>com.sun.star.uno.XWeak</type>
        <type>com.sun.star.io.IOException</type>
        <type>com.sun.star.io.XStream</type>
        <type>com.sun.star.io.XOutputStream</type>
        <type>com.sun.star.registry.XRegistryKey</type>
        <type>drafts.com.sun.star.script.framework.storage.XScriptInfo</type>
        <type>drafts.com.sun.star.script.framework.storage.XScriptInfoAccess</type>
        <type>drafts.com.sun.star.script.framework.security.XScriptSecurity</type>
        <type>drafts.com.sun.star.script.framework.storage.XScriptStorageExport</type>
	<type>drafts.com.sun.star.script.framework.storage.XScriptStorageRefresh</type>
        <type>com.sun.star.lang.XInitialization</type>
        <type>drafts.com.sun.star.script.framework.storage.XScriptStorageManager</type>
        <type>com.sun.star.xml.sax.XExtendedDocumentHandler</type>
        <type>com.sun.star.xml.sax.XParser</type>
        <type>com.sun.star.io.XInputStream</type>
        <type>com.sun.star.ucb.XSimpleFileAccess2</type>
        <type>com.sun.star.xml.sax.SAXException</type>
        <type>com.sun.star.xml.sax.XAttributeList</type>
        <type>com.sun.star.io.XActiveDataSource</type>
        <type>com.sun.star.security.AccessControlException</type>
        <type>com.sun.star.security.RuntimePermission</type>
        <type>com.sun.star.lang.IllegalArgumentException</type>
    </component-description>
    <project-build-dependency>cppuhelper</project-build-dependency>
    <project-build-dependency>cppu</project-build-dependency>
    <project-build-dependency>sal</project-build-dependency>
    <runtime-module-dependency>cppuhelper2$(COM)</runtime-module-dependency>
    <runtime-module-dependency>cppu2</runtime-module-dependency>
    <runtime-module-dependency>sal2</runtime-module-dependency>
    <runtime-module-dependency>ucb</runtime-module-dependency>
</module-description>
