This documentation discusses interfaces and classes for Pincette modules and WebDAV-client developers.

See:
          Description

Packages
be.re.net  
be.re.repo Here you will find all module interface definitions.
be.re.repo.mod This package contains some utilities that are helpful for certain document formats.
be.re.webdav  
be.re.xml  
be.re.xml.stax  

 

This documentation discusses interfaces and classes for Pincette modules and WebDAV-client developers.

In Pincette a number of parts are configurable through modules. These implement certain interfaces and are placed in the /configuration/ folder. The /configuration/maps.xml contains the declarations of the modules. Such declarations can apply either for certain WebDAV-collections and everything below or for the entire repositiory. Certain declarations may also depend on specific MIME types.

Modules are always deployed in their own class loader, which isolates them from each other. This way different modules can use different versions of certain packages without interference, making release management a lot easier. Modules can refer to other packages through their manifest file's class path, which contains relative URLs to them. In practice this means that when a module uses a package you can just place it next to it under the /configuration/ folder or wherever the manifest expects it to be.

The /configuration/ folder is under supervision of its own built-in dynamic view called /view/configuration/. Since views can use labels as a version selection mechanism, easy configuration management is possible for the configuration area as a whole. It allows you to keep track of all changes, just like with any other document or folder in the system. When the latest configuration version doesn't work as expected you can fall back to the previous one by just setting its label in the dynamic view. Whenever the slightest part under the /configuration/ folder changes because of a different version selection, the whole configuration is reloaded. Failing to load a configuration leaves the current one running.

Modules can be created for the following tasks:

Most module interfaces have special variants for XML, because XML-documents get special treatment in Pincette.

Modules can perform actions against the server they sit in as if they were a client of the server. They have to use a special constructor of the be.re.webdav.Client class, which causes a direct dispatch into the server instead of going via HTTP. However, the same marshalling, validations and security checks apply. A module normally runs in the security context of the user that performed the request. This is not to shield the system from the modules, which are trusted code, but it is merely for the convenience of module implementators so that the correct security context is propagated automatically. A system module could easily use the system security context.