<?xml version="1.0" encoding="utf-8"?> <!-- Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved. DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. This code is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 2 only, as published by the Free Software Foundation. This code 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 General Public License version 2 for more details (a copy is included in the LICENSE file that accompanied this code). You should have received a copy of the GNU General Public License version 2 along with this work; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA or visit www.oracle.com if you need additional information or have any questions. --> <sampleapi> <module name="my.first.module" id="first"> <exports package="$exported"/> <exports package="$exported.to"> <to module="$second"/> </exports> <opens package="$internal"> <to module="$second"/> </opens> <uses service="$service"/> <package name="sampleapi.exported" id="exported"> <class basename="API" id="service"> <modifier>public</modifier> <member> <method basename="get"> <modifier>public</modifier> <type>Object</type> </method> </member> </class> </package> <package name="sampleapi.exported.to" id="exported.to"> <class basename="API" id="baseclass"> <modifier>public</modifier> <member> <method basename="put"> <param>Object</param> <type>void</type> </method> </member> </class> </package> <package name="sampleapi.not.exported" id="internal"> <class basename="AnImplementationDetail"/> </package> </module> <module name="my.second.module" id="second" kind="open"> <requires module="$first" transitive="true"/> <requires module="java.xml" static="true"/> <provides service="$service"> <implementation class="$second.impl"/> <implementation class="$third.impl"/> </provides> <package name="sampleapi.exported.second"> <class basename="API" id="second.impl"> <extend id="baseclass"/> </class> <class basename="OtherAPI" id="third.impl"> <extend id="baseclass"/> </class> <class basename="TClass"> <modifier>public</modifier> <modifier>none|abstract</modifier> <implement>SInterface0</implement> <member> <field basename="id"> <modifier>public</modifier> <type>int</type> </field> <method basename="get"> <modifier>public</modifier> <type>int</type> <throw>SException0</throw> </method> <method basename="put"> <modifier>public</modifier> <param>int</param> <type>void</type> <throw>SException0</throw> </method> </member> </class> </package> </module> </sampleapi>