<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE project [
<!--

    Copyright (c) 2018 Oracle and/or its affiliates. All rights reserved.

    This program and the accompanying materials are made available under the
    terms of the Eclipse Public License v. 2.0, which is available at
    http://www.eclipse.org/legal/epl-2.0.

    This Source Code may also be made available under the following Secondary
    Licenses when the conditions for such availability set forth in the
    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
    version 2 with the GNU Classpath Exception, which is available at
    https://www.gnu.org/software/classpath/license.html.

    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0

-->

<!ENTITY commonSetup SYSTEM "file:./../../config/properties.xml">
<!ENTITY commonBuild SYSTEM "file:./../../config/common.xml">
]>

<project name="corba" default="all" basedir=".">

  &commonSetup;
  &commonBuild;

  <property name="module" value="corba"/>

  <property name="corba.delegates"
    value="-Djavax.rmi.CORBA.UtilClass=com.sun.corba.ee.impl.javax.rmi.CORBA.Util"/>

  <property name="orb.properties1"
    value="-Dorg.omg.CORBA.ORBClass=com.sun.corba.ee.impl.orb.ORBImpl"/>

  <property name="orb.properties2"
    value="-Dorg.omg.CORBA.ORBSingletonClass=com.sun.corba.ee.impl.orb.ORBSingleton"/>

  <property name="orb.properties3"
    value="-Djavax.rmi.CORBA.StubClass=com.sun.corba.ee.impl.javax.rmi.CORBA.StubDelegateImpl"/>

  <property name="orb.properties4"
    value="-Djavax.rmi.CORBA.PortableRemoteObjectClass=com.sun.corba.ee.impl.javax.rmi.PortableRemoteObject"/>

  <property name="corba.interceptors"
    value="-Dorg.omg.PortableInterceptor.ORBInitializerClass.corba.ORBInitializerImpl"/>

  <target name="all" depends="clean,build,run"/>
  <target name="run-test" depends="clean,build,run"/>

  <target name="setup"/>
  <target name="unsetup"/>

  <target name="clean" depends="init-common">
    <antcall  target="clean-common"/>
  </target>

  <target name="build">
    <antcall  target="compile-common">
      <param name="src" value="src"/>
    </antcall>
    <antcall target="stubs"/>
  </target>

  <target name="stubs" depends="init-common">
    <rmic base="${build.classes.dir}"
      classpath="${s1astest.classpath}"
      iiop="yes" iiopopts="-poa"
      classname="corba.RemoteTestImpl">
    </rmic>
  </target>

  <target name="run" depends="init-common">
    <java
      classpath="${s1astest.classpath}"
      failonerror="true"
      fork="true"
      classname="corba.Server"
      >
      <jvmarg value="${orb.properties1}"/>
      <jvmarg value="${orb.properties2}"/>
      <jvmarg value="${orb.properties3}"/>
      <jvmarg value="${orb.properties4}"/>
      <jvmarg value="${corba.delegates}"/>
      <jvmarg value="${corba.interceptors}"/>
      <jvmarg value="-Djava.library.path=${ld.library.path}"/>
      <jvmarg value="-Dorg.omg.CORBA.ORBInitRef=NameService=corbaloc:iiop:1.2@${admin.host}:${orb.port}/NameService"/>
      <arg line="corbaname::${admin.host}:${orb.port}#RemoteTest"/>
    </java>
  </target>
</project>
