# ------------------------------------------------------------------
# Example mangen properties for generation of OBR descriptors
# ------------------------------------------------------------------

#
# We don't use a ProcessBundles rule, hence no imports/exports will be generated
# Rather than assume this will always be the case, we use a "Merge" rule to 
# merge the current imports/exports into the mangen set. This allows the
# ObrReport to use the mangen generated set, and ensures that 
# descriptors can be created either from existing import/exports or generated
# imports/exports.
#
mangen.rulesets=mangen-rule- 
mangen-rule-0=Merge existing imports(.*) exports(.*)

#
# Create the OBR descriptor report
#
mangen-report-0=ObrReport skip-jars(.*-src\\.jar)

#-----------------------------------------------------------------------------
#
# Properties below this section should not be changed without a good 
# understanding of mangen's internal operation
#

# Specifies which scanner class to use.
mangen.scanner.class=com.ascert.openosgi.mangen.BCELScanner
#mangen.scanner.class=org.ungoverned.osgi.mangen.ASMClassScanner

#
# Controls which format of OBR descriptor to create
#
mangen.obr.ver=1

#
# Formats for OBR 1 descriptor
#
mangen.obr.descr.1=\
<bundle>\n   \
    <bundle-name>@@hdr:Bundle-Name@@</bundle-name>\n   \
    <bundle-description>@@hdr:Bundle-Description@@</bundle-description>\n   \
    <bundle-updatelocation>@@hdr:Bundle-UpdateLocation@@</bundle-updatelocation>\n   \
    <bundle-sourceurl>@@hdr:Bundle-SourceUrl@@</bundle-sourceurl>\n   \
    <bundle-version>@@hdr:Bundle-Version@@</bundle-version>\n   \
    <bundle-docurl>@@hdr:Bundle-DocURL@@</bundle-docurl>\n   \
    <bundle-category>@@hdr:Bundle-Category@@</bundle-category>\n   \
    @@imports@@\
    @@exports@@\n\
</bundle>

mangen.obr.import.1=<import-package package="@@pkg:name@@" @@import-ver@@/>\n   
mangen.obr.import.ver.1=specification-version="@@pkg:ver@@"

mangen.obr.export.1=<export-package package="@@pkg:name@@" @@export-ver@@/>\n   
mangen.obr.export.ver.1=specification-version="@@pkg:ver@@"

#
# Formats for OBR 2 descriptor
#
mangen.obr.descr.2=\
<bundle>\n   \
    <bundle-name>@@hdr:Bundle-Name@@</bundle-name>\n   \
    <bundle-symbolicname>@@hdr:Bundle-SymbolicName@@</bundle-symbolicname>\n   \
    <bundle-description>@@hdr:Bundle-Description@@</bundle-description>\n   \
    <bundle-url>@@hdr:Bundle-URL@@</bundle-url>\n   \
    <bundle-sourceurl>@@hdr:Bundle-SourceUrl@@</bundle-sourceurl>\n   \
    <bundle-version>@@hdr:Bundle-Version@@</bundle-version>\n   \
    <bundle-docurl>@@hdr:Bundle-DocURL@@</bundle-docurl>\n   \
    <bundle-category>@@hdr:Bundle-Category@@</bundle-category>\n   \
    @@imports@@   \
    @@exports@@\n\
</bundle>

mangen.obr.import.2=   \
    <requirement>\n   \
        <![CDATA[\n      \
            (&(type=Export-Package)\n         \
            (name=@@pkg:name@@)\n         \
            @@import-ver@@)\n         \
        ]]>\n   \
   </requirement>\n
mangen.obr.import.ver.2=(version>=@@pkg:ver@@)

mangen.obr.export.2=   \
    <capability>\n      \
        <property name="type"\n         \
            type="java.lang.String"\n         \
            value="Export-Package"/>\n      \
        <property name="name"\n         \
            type="java.lang.String"\n         \
            value="@@pkg:name@@"/>\n      \
        @@export-ver@@\
    </capability>
mangen.obr.export.ver.2=\
        <property name="version"\n         \
            type="org.ungoverned.osgi.bundle.bundlerepository.R4Version"\n         \
            value="@@pkg:ver@@"/>\n   \


