Publishing and Sharing Pnuts Modules

Table of Contents

Overview

Module descriptor file defines essential information of a module such as module's name, module's version, and URL of JAR files of the module. Module descriptor files are usually used as static Web contents, as well as related resources that are linked from the module description.

module-tools module allows you to access module descriptor files, browse published/installed modules, and install/update modules.

Minimum module descriptor file

<?xml version="1.0" encoding="utf-8"?>
<module-set>
  <module>
    <module-name>sample</module-name>
    <module-version>1.1</module-version>
    <description>sample module</description>
    <resource>
      <name>sample module</name>
      <jar-file>sample.jar</jar-file>
    </resource>
  </module>
</module-set>

File Format of Module Descriptors

Module Descriptor is a XML file that contains a module-set element or a module element.

module-set element

AttributeDescriptionMandatory/Optional
resource-bundleURL of a resource bundle JAROptional

TagDescriptionMandatory/Optional
module-refURL of module descriptor file (must contains a module element)Optional
modulemodule elementOptional
module-set-refURL of other module-set file (must contains a module-set element)Optional

module element

AttributeDescriptionMandatory/Optional
locationOriginal location of the module description file. The value is used as the base of all ralative-URLs in the module element. If not specified, the base URL is where the module descriptor file is located.Optional
resource-bundleURL of a resource bundle JAR. If not specified, resource-bundle attribute of module-set element is used.Optional

TagDescriptionMandatory/Optional
module-nameModule NameMandatory
module-versionModule Version (e.g. 1.0, 1.0.1)Mandatory
descriptionBrief DescriptionMandatory
last-modifiedLast modified time (the number of milliseconds since January 1, 1970, 00:00:00 GMT)Optional
commentCommentsOptional
pnuts-versionCompatible Pnuts version (minimum number)Optional(1.0 by default)
java-versionJava version (minimum number)Optional(1.2 by default)
document-urlURL of the document pageOptional
reference-urlURL of a file that contains refererence elementOptional
distributionan element that specifies distribution filesOptional
resourcean elemnt that specifies files of the moduleOptional
authoran element that specifies authorOptional
contactan element that specifies contact personsOptional
categoryan element that specifies keywords that characterize the moduleOptional
sub-modulean element that specifies sub-modulesOptional
dependencyan element that specifies dependencyOptional

resource element

TagDescriptionMandatory/Optional
nameresource nameOptional
licensean element that specifies license termOptional
jar-fileJAR files, which should be installed in ${pnuts.home}/modules/Optional
native-libnative library filesOptional

native-lib element

AttributeDescriptionMandatory/Optional
osOS (e.g. windows, macosx, solaris, linux, etc.)Mandatory
archhardware architecture(e.g. x86, powerpc, solaris, etc.)Mandatory

license element

TagDescriptionMandatory/Optional
license-namelicense name (e.g. LGPL)Optional
license-urlURL of license termOptional

distribution element

TagDescriptionMandatory/Optional
fileURL of distribution fileMandatory

author element

TagDescriptionMandatory/Optional
nameAuthor's nameOptional
emailAuthor's email addressOptional

contact element

TagDescriptionMandatory/Optional
nameContact person's nameOptional
emailContact person's email addressOptional

category element

TagDescriptionMandatory/Optional
keywordkeywords that characterize the moduleOptional

sub-module element

TagDescriptionMandatory/Optional
module-namesub-module's nameOptional

dependency element

TagDescriptionMandatory/Optional
module-refURLs of module descriptor files that the module depends onOptional

reference element

TagDescriptionMandatory/Optional
functionan element that specifies location of specified functionOptional

function element

AttributeDescriptionMandatory/Optional
namethe name of the functionMandatory

Internationalizing Module Descriptor

Module descriptor file syntax provides a way to use internationalized resource. The pattern ${keyword} is expanded when module descriptor file is parsed. resource-bundle attribute of module element specifies a JAR file of an international resource bundle.

e.g.

<?xml version="1.0" encoding="utf-8"?>
<module-set>
  <module resource-bundle="properties.jar">
    <module-name>sample</module-name>
    <module-version>1.1</module-version>
    <description>${description}</description>
    <resource>
      <name>sample module</name>
      <jar-file>sample.jar</jar-file>
    </resource>
  </module>
</module-set>

module.properties in properties.jar

description=sample module

Merging Module Descriptors

Module descriptor files can have references to other module descriptor files on different Web servers. The more module descriptor files it links to, the longer it will take to get all information, because of network traffic overhead. merge_module_descriptors() allows you to perpare a merged module descriptor file, so that users can get all module information faster.