<?xml version="1.0" encoding="UTF-8"?>
<!--
    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.
    
-->

<project xmlns="http://www.netbeans.org/ns/project/1">
    <type>org.netbeans.modules.apisupport.project</type>
    <configuration>
        <data xmlns="http://www.netbeans.org/ns/nb-module-project/3">
            <code-name-base>org.netbeans.modules.libs.corba.omgapi</code-name-base>
            <module-dependencies/>
            <public-packages>
                <package>com.sun.corba.ee.org.omg.CORBA</package>
                <package>javax.activity</package>
                <package>javax.rmi</package>
                <package>javax.rmi.CORBA</package>
                <package>org.omg.CORBA</package>
                <package>org.omg.CORBA.ContainedPackage</package>
                <package>org.omg.CORBA.ContainerPackage</package>
                <package>org.omg.CORBA.DynAnyPackage</package>
                <package>org.omg.CORBA.InterfaceDefPackage</package>
                <package>org.omg.CORBA.ORBPackage</package>
                <package>org.omg.CORBA.TSIdentificationPackage</package>
                <package>org.omg.CORBA.TypeCodePackage</package>
                <package>org.omg.CORBA.ValueDefPackage</package>
                <package>org.omg.CORBA.portable</package>
                <package>org.omg.CORBA_2_3</package>
                <package>org.omg.CORBA_2_3.portable</package>
                <package>org.omg.CosNaming</package>
                <package>org.omg.CosNaming.NamingContextExtPackage</package>
                <package>org.omg.CosNaming.NamingContextPackage</package>
                <package>org.omg.CosTSInteroperation</package>
                <package>org.omg.CosTSPortability</package>
                <package>org.omg.CosTransactions</package>
                <package>org.omg.Dynamic</package>
                <package>org.omg.DynamicAny</package>
                <package>org.omg.DynamicAny.DynAnyFactoryPackage</package>
                <package>org.omg.DynamicAny.DynAnyPackage</package>
                <package>org.omg.IOP</package>
                <package>org.omg.IOP.CodecFactoryPackage</package>
                <package>org.omg.IOP.CodecPackage</package>
                <package>org.omg.Messaging</package>
                <package>org.omg.PortableInterceptor</package>
                <package>org.omg.PortableInterceptor.ORBInitInfoPackage</package>
                <package>org.omg.PortableServer</package>
                <package>org.omg.PortableServer.CurrentPackage</package>
                <package>org.omg.PortableServer.POAManagerPackage</package>
                <package>org.omg.PortableServer.POAPackage</package>
                <package>org.omg.PortableServer.ServantLocatorPackage</package>
                <package>org.omg.PortableServer.portable</package>
                <package>org.omg.SendingContext</package>
                <package>org.omg.SendingContext.CodeBasePackage</package>
                <package>org.omg.TimeBase</package>
                <package>org.omg.stub.java.rmi</package>
            </public-packages>
            <class-path-extension>
                <runtime-relative-path>ext/corba/omgapi/glassfish-corba-omgapi.jar</runtime-relative-path>
            </class-path-extension>
        </data>
    </configuration>
</project>
