Dear Wiki user, You have subscribed to a wiki page or wiki category on "Jakarta-slide Wiki" for change notification.
The following page has been changed by PhilBurnside: http://wiki.apache.org/jakarta-slide/RDBMS_Domain%2eXML New page: This is an example of using MySQL4.1 as an rdbms repository for stores. It also uses Text stores. To be used in conjunction with ["Multi Store Web.XML"] {{{ <?xml version="1.0"?> <!-- Phillip Burnside, 13/05/2005. I have re-written this Domain.xml to make the security and administration of multiple stores a bit more sensible. Have defined a root store which defines roles, users and actions. The only user to have access to this is members of the administration role. All other users will be added to the roles per store. This way you seperate the data from the admin. RDBMS Connectivity ================== MySQL: Have included an RDBMS store connecting to a MySQL database (build 4.1). You will need to get the file mysql-connector-java-3.1.8.jar from the MySQL site (part of the connector download). Put this file in $Tomcat/common/lib This lets the JDBC connector come on line. Also note you need to refer to element org.apache.slide.store.impl.rdbms.MySql41RDBMSAdapter NOT org.apache.slide.store.impl.rdbms.MySqlRDBMSAdapter. This is due to a non-supported MySQL feature being requested (MULTI-DELETE) --> <slide> <namespace name="slide"> <definition> <store name="slide"> <parameter name="tlock-timeout">120</parameter> <nodestore classname="org.apache.slide.store.txfile.TxXMLFileDescriptorsStore"> <parameter name="rootpath">D:/SLIDESTORE/slide/store/metadata</parameter> <parameter name="workpath">D:/SLIDESTORE/slide/work/metadata</parameter> <parameter name="defer-saving">true</parameter> <parameter name="timeout">120</parameter> </nodestore> <sequencestore classname="org.apache.slide.store.txfile.FileSequenceStore"> <parameter name="rootpath">/slide/store/sequence</parameter> </sequencestore> <securitystore> <reference store="nodestore"/> </securitystore> <lockstore> <reference store="nodestore"/> </lockstore> <revisiondescriptorsstore> <reference store="nodestore"/> </revisiondescriptorsstore> <revisiondescriptorstore> <reference store="nodestore"/> </revisiondescriptorstore> <contentstore classname="org.apache.slide.store.txfile.TxFileContentStore"> <parameter name="rootpath">/slide/store/content</parameter> <parameter name="workpath">/slide/work/content</parameter> <parameter name="defer-saving">true</parameter> <parameter name="timeout">120</parameter> </contentstore> <!-- uncomment if you want to use the sample Indexer --> <!-- be sure to have Lucene in your classpath --> <!-- <contentindexer classname="org.apache.slide.index.SampleTxtContainsIndexer"> <parameter name="indexpath">./index</parameter> </contentindexer> --> </store> <!-- #Phil 12/05/2005 Now define the data stores --> <store name="data1"> <parameter name="tlock-timeout">120</parameter> <nodestore classname="org.apache.slide.store.txfile.TxXMLFileDescriptorsStore"> <parameter name="rootpath">D:/SLIDESTORE/slide/data1/store/metadata</parameter> <parameter name="workpath">D:/SLIDESTORE/slide/data1/work/metadata</parameter> <parameter name="defer-saving">true</parameter> <parameter name="timeout">120</parameter> </nodestore> <sequencestore classname="org.apache.slide.store.txfile.FileSequenceStore"> <parameter name="rootpath">/slide/data1/store/sequence</parameter> </sequencestore> <securitystore> <reference store="nodestore"/> </securitystore> <lockstore> <reference store="nodestore"/> </lockstore> <revisiondescriptorsstore> <reference store="nodestore"/> </revisiondescriptorsstore> <revisiondescriptorstore> <reference store="nodestore"/> </revisiondescriptorstore> <contentstore classname="org.apache.slide.store.txfile.TxFileContentStore"> <parameter name="rootpath">/slide/data1/store/content</parameter> <parameter name="workpath">/slide/data1/work/content</parameter> <parameter name="defer-saving">true</parameter> <parameter name="timeout">120</parameter> </contentstore> <!-- uncomment if you want to use the sample Indexer --> <!-- be sure to have Lucene in your classpath --> <!-- <contentindexer classname="org.apache.slide.index.SampleTxtContainsIndexer"> <parameter name="indexpath">./index</parameter> </contentindexer> --> </store> <store name="data2"> <parameter name="tlock-timeout">120</parameter> <nodestore classname="org.apache.slide.store.txfile.TxXMLFileDescriptorsStore"> <parameter name="rootpath">D:/SLIDESTORE/slide/data2/store/metadata</parameter> <parameter name="workpath">D:/SLIDESTORE/slide/data2/work/metadata</parameter> <parameter name="defer-saving">true</parameter> <parameter name="timeout">120</parameter> </nodestore> <sequencestore classname="org.apache.slide.store.txfile.FileSequenceStore"> <parameter name="rootpath">/slide/data2/store/sequence</parameter> </sequencestore> <securitystore> <reference store="nodestore"/> </securitystore> <lockstore> <reference store="nodestore"/> </lockstore> <revisiondescriptorsstore> <reference store="nodestore"/> </revisiondescriptorsstore> <revisiondescriptorstore> <reference store="nodestore"/> </revisiondescriptorstore> <contentstore classname="org.apache.slide.store.txfile.TxFileContentStore"> <parameter name="rootpath">/slide/data2/store/content</parameter> <parameter name="workpath">/slide/data2/work/content</parameter> <parameter name="defer-saving">true</parameter> <parameter name="timeout">120</parameter> </contentstore> <!-- uncomment if you want to use the sample Indexer --> <!-- be sure to have Lucene in your classpath --> <!-- <contentindexer classname="org.apache.slide.index.SampleTxtContainsIndexer"> <parameter name="indexpath">./index</parameter> </contentindexer> --> </store> <!-- #Phil - 13/05/2005 Have defined a single RDBMS store. Was straightforward. Because I haven't defined users and security within the MySQL database I have commented out the user and password parameters. You could configure a slideuser and restrict them, but this is over to the DB administrators to hack out. This configuration is for MySQL. You would need to change the JDBC calls and config to suit the RDBMS of choice. NOTE - if you define multiple stores you should also define different database instances. If your DBMS engine can handle the multi-threading then you may be able to get away with it, otherwise you need to point it to another schema. --> <store name="rdbms"> <parameter name="tlock-timeout">120</parameter> <nodestore classname="org.apache.slide.store.impl.rdbms.JDBCStore"> <parameter name="adapter">org.apache.slide.store.impl.rdbms.MySql41RDBMSAdapter</parameter> <parameter name="driver">com.mysql.jdbc.Driver</parameter> <parameter name="url">jdbc:mysql://localhost/slide</parameter> <parameter name="dbcpPooling">true</parameter> <parameter name="maxPooledConnections">10</parameter> <parameter name="isolation">SERIALIZABLE</parameter> <parameter name="compress">false</parameter> </nodestore> <securitystore> <reference store="nodestore"/> </securitystore> <lockstore> <reference store="nodestore"/> </lockstore> <revisiondescriptorsstore> <reference store="nodestore"/> </revisiondescriptorsstore> <revisiondescriptorstore> <reference store="nodestore"/> </revisiondescriptorstore> <contentstore> <reference store="nodestore"/> </contentstore> </store> <store name="rdbms2"> <parameter name="tlock-timeout">120</parameter> <nodestore classname="org.apache.slide.store.impl.rdbms.JDBCStore"> <parameter name="adapter">org.apache.slide.store.impl.rdbms.MySql41RDBMSAdapter</parameter> <parameter name="driver">com.mysql.jdbc.Driver</parameter> <parameter name="url">jdbc:mysql://localhost/slide2</parameter> <parameter name="dbcpPooling">true</parameter> <parameter name="maxPooledConnections">10</parameter> <parameter name="isolation">SERIALIZABLE</parameter> <parameter name="compress">false</parameter> </nodestore> <securitystore> <reference store="nodestore"/> </securitystore> <lockstore> <reference store="nodestore"/> </lockstore> <revisiondescriptorsstore> <reference store="nodestore"/> </revisiondescriptorsstore> <revisiondescriptorstore> <reference store="nodestore"/> </revisiondescriptorstore> <contentstore> <reference store="nodestore"/> </contentstore> </store> <!-- #Phil - 12/05/2005 This is where you define the scope of your namespace. Defining it as "/" means this is the default store for the namespace. This has more relevance when implementing multiple stores. Effectively this maps a call to SLIDE to it's store. In order to invoke this store simply call "http://localhost:8080/slide" --> <scope match="/" store="slide"/> <scope match="/data1" store = "data1"/> <scope match="/data2" store = "data2"/> <scope match="/rdbms" store = "rdbms"/> <scope match="/rdbms2" store = "rdbms2"/> </definition> <configuration> <!-- #Phil - 13/05/2005 Now define the actions which are available to all stores. --> <!-- Actions mapping --> <read-object>/actions/read</read-object> <create-object>/actions/write</create-object> <remove-object>/actions/write</remove-object> <grant-permission>/actions/write-acl</grant-permission> <revoke-permission>/actions/write-acl</revoke-permission> <read-permissions>/actions/read-acl</read-permissions> <read-own-permissions>/actions/read-current-user-privilege-set</read-own-permissions> <lock-object>/actions/write</lock-object> <kill-lock>/actions/unlock</kill-lock> <read-locks>/actions/read</read-locks> <read-revision-metadata>/actions/read</read-revision-metadata> <create-revision-metadata>/actions/write-properties</create-revision-metadata> <modify-revision-metadata>/actions/write-properties</modify-revision-metadata> <remove-revision-metadata>/actions/write-properties</remove-revision-metadata> <read-revision-content>/actions/read</read-revision-content> <create-revision-content>/actions/write-content</create-revision-content> <modify-revision-content>/actions/write-content</modify-revision-content> <remove-revision-content>/actions/write-content</remove-revision-content> <bind-member>/actions/bind</bind-member> <unbind-member>/actions/unbind</unbind-member> <!-- #Phil - 12/05/2005 The key things to be aware of here are : Users are defined within the store. This prevents any users having global access to all stores. If you want this then define them as "/users/name". This path setting will be the default path used by the primary store. Roles need to be defined at the root level. This has something to do with the Tomcat realm configuration and needs to be investigated further. Actions can be defined at root or store level. This is up to you howver to share actions across stores it is better to define them and their binding at the root level. acl_inheritance_type has four values (see here for more details http://jakarta.apache.org/slide/howto-acl.html) The key thing to note is that if you turn inheritance to "none" you need to define the security for every level under /slide. This could become cumbersome. Similarly if you use the option "root" you need to define all of the security at the root level then refine at lower levels. --> <!-- Paths configuration --> <userspath>/users</userspath> <rolespath>/roles</rolespath> <actionspath>/actions</actionspath> <!--filespath>/slide/main</filespath--> <parameter name="dav">true</parameter> <parameter name="standalone">true</parameter> <parameter name="acl_inheritance_type">path</parameter> <!-- Nested roles: 0 means no nesting (default), 1 means one sublevel, etc. --> <parameter name="nested_roles_maxdepth">0</parameter> <!-- Can be "off", "write" and "full" --> <parameter name="sequential-mode">full</parameter> <!-- "false" lets all read-only methods be executed outside of transactions --> <parameter name="all-methods-in-transactions">true</parameter> <!-- Setting this to true will force Slide to internally convert the username a user enters at login to lowercase. This is useful for users who can't be bothered with turning off their capslock key before logging in. --> <parameter name="force-lowercase-login">false</parameter> </configuration> <data> <objectnode classname="org.apache.slide.structure.SubjectNode" uri="/"> <!-- Subject can be: any user "all" authenticated user "authenticated" unauthenticated user "unauthenticated" self "self" owner of resource "owner" a user "/users/john" a role "/roles/admin" --> <!-- #Phil - 13/05/2005 Now define your users and the levels of access they have. NOTE - At the time of writing there was a bug with the security model. When it is loaded the new permissions are added to existing permissions on collections NOT replacing them. You need to flush the security buffers of the metadata in order to have new permissions take full hold. Please see "Tips and Tricks" on the WebDAV Open Source Wiki (hopefully still here - http://10.233.106.142:8080/xwiki/bin/view/Main/TipsandTricks) --> <permission action="/actions/read-acl" subject="all" inheritable="true"/> <permission action="/actions/write-acl" subject="all" inheritable="true"/> <permission action="/actions/unlock" subject="all" inheritable="true"/> <permission action="/actions/read" subject="all" inheritable="true"/> <permission action="all" subject="/roles/admin" inheritable="true"/> <!--permission action="/actions/bind" subject="/roles/admin" inheritable="true"/--> <!-- /users --> <objectnode classname="org.apache.slide.structure.SubjectNode" uri="/users"> <permission action="all" subject="self" inheritable="true"/> <permission action="all" subject="/roles/projector" inheritable="true"/> <permission action="" subject="unauthenticated" inheritable="true" negative="true"/> <objectnode classname="org.apache.slide.structure.SubjectNode" uri="/users/user1"> <revision> <property name="password">user1</property> </revision> </objectnode> <objectnode classname="org.apache.slide.structure.SubjectNode" uri="/users/user2"> <revision> <property name="password">user2</property> </revision> </objectnode> <objectnode classname="org.apache.slide.structure.SubjectNode" uri="/users/user3"> <revision> <property name="password">user3</property> </revision> </objectnode> <objectnode classname="org.apache.slide.structure.SubjectNode" uri="/users/user4"> <revision> <property name="password">user4</property> </revision> </objectnode> </objectnode> <!-- /roles --> <objectnode classname="org.apache.slide.structure.SubjectNode" uri="/roles"> <objectnode classname="org.apache.slide.structure.SubjectNode" uri="/roles/admin"> <revision> <property name="group-member-set"><![CDATA[ <D:href xmlns:D='DAV:'>/users/user1</D:href>]]> </property> </revision> </objectnode> <objectnode classname="org.apache.slide.structure.SubjectNode" uri="/roles/data1"> <revision> <property name="group-member-set"><![CDATA[ <D:href xmlns:D='DAV:'>/users/user2</D:href> <D:href xmlns:D='DAV:'>/users/user3</D:href>]]> </property> </revision> </objectnode> <objectnode classname="org.apache.slide.structure.SubjectNode" uri="/roles/data2"> <revision> <property name="group-member-set"><![CDATA[ <D:href xmlns:D='DAV:'>/users/user2</D:href> <D:href xmlns:D='DAV:'>/users/user4</D:href>]]> </property> </revision> </objectnode> <objectnode classname="org.apache.slide.structure.SubjectNode" uri="/roles/rdbms1"> <revision> <property name="group-member-set"><![CDATA[ <D:href xmlns:D='DAV:'>/users/user2</D:href> <D:href xmlns:D='DAV:'>/users/user3</D:href>]]> </property> </revision> </objectnode> </objectnode> <!-- action --> <objectnode classname="org.apache.slide.structure.ActionNode" uri="/actions"> <objectnode classname="org.apache.slide.structure.ActionNode" uri="/actions/read"> <revision> <property name="privilege-member-set"><![CDATA[ <D:href xmlns:D='DAV:'>/actions/read-acl</D:href> <D:href xmlns:D='DAV:'>/actions/read-current-user-privilege-set</D:href>]]> </property> </revision> </objectnode> <objectnode classname="org.apache.slide.structure.ActionNode" uri="/actions/read-acl"> <revision> <property name="privilege-member-set"/> </revision> </objectnode> <objectnode classname="org.apache.slide.structure.ActionNode" uri="/actions/read-current-user-privilege-set"> <revision> <property name="privilege-member-set"/> </revision> </objectnode> <objectnode classname="org.apache.slide.structure.ActionNode" uri="/actions/write"> <revision> <property name="privilege-member-set"><![CDATA[ <D:href xmlns:D='DAV:'>/actions/write-acl</D:href> <D:href xmlns:D='DAV:'>/actions/write-properties</D:href> <D:href xmlns:D='DAV:'>/actions/write-content</D:href>]]> </property> </revision> </objectnode> <objectnode classname="org.apache.slide.structure.ActionNode" uri="/actions/write-acl"> <revision> <property name="privilege-member-set"/> </revision> </objectnode> <objectnode classname="org.apache.slide.structure.ActionNode" uri="/actions/write-properties"> <revision> <property name="privilege-member-set"/> </revision> </objectnode> <objectnode classname="org.apache.slide.structure.ActionNode" uri="/actions/write-content"> <revision> <property name="privilege-member-set"><![CDATA[ <D:href xmlns:D='DAV:'>/actions/bind</D:href> <D:href xmlns:D='DAV:'>/actions/unbind</D:href>]]> </property> </revision> </objectnode> <objectnode classname="org.apache.slide.structure.ActionNode" uri="/actions/bind"> <revision> <property name="privilege-member-set"/> </revision> </objectnode> <objectnode classname="org.apache.slide.structure.ActionNode" uri="/actions/unbind"> <revision> <property name="privilege-member-set"/> </revision> </objectnode> <objectnode classname="org.apache.slide.structure.ActionNode" uri="/actions/unlock"> <revision> <property name="privilege-member-set"/> </revision> </objectnode> </objectnode> <!-- #Phil - 13/05/2005 Now define access rights for each of the common areas used by the File system storage. These are the areas shared between stores which use the filesystem. TIP - do remember to flush the security buffers in the metadata otherwise weird and wonderful things will happen. --> <objectnode classname="org.apache.slide.structure.SubjectNode" uri="/projector"> <permission action="/actions/write" subject="/roles/projector" inheritable="true"/> <permission action="/actions/read-acl" subject="owner" inheritable="true"/> <objectnode classname="org.apache.slide.structure.SubjectNode" uri="/projector/work"> </objectnode> </objectnode> <!-- DeltaV: default history and workspace paths --> <objectnode classname="org.apache.slide.structure.SubjectNode" uri="/history"> <permission action="all" subject="unauthenticated" inheritable="true" negative="true"/> <permission action="/actions/write" subject="all" inheritable="true"/> <!--permission action="/actions/write" subject="/roles/editor" inheritable="true"/> <permission action="/actions/bind" subject="/roles/editor" inheritable="true"/--> <permission action="/actions/read-acl" subject="owner" inheritable="true"/> <permission action="/actions/read" subject="all" inheritable="true"/> </objectnode> <objectnode classname="org.apache.slide.structure.SubjectNode" uri="/workspace"> <permission action="all" subject="unauthenticated" inheritable="true"/> <permission action="/actions/write" subject="authenticated" inheritable="true"/> <permission action="/actions/read-acl" subject="owner" inheritable="true"/> </objectnode> <objectnode classname="org.apache.slide.structure.SubjectNode" uri="/workingresource"> <permission action="all" subject="unauthenticated" inheritable="true"/> <permission action="/actions/write" subject="authenticated" inheritable="true"/> <permission action="/actions/read-acl" subject="owner" inheritable="true"/> </objectnode> <!-- #Phil 13/05/2005 Now define the stores --> <objectnode classname="org.apache.slide.structure.SubjectNode" uri="/data1"> <!-- Subject can be: any user "all" authenticated user "authenticated" unauthenticated user "unauthenticated" self "self" owner of resource "owner" a user "/users/john" a role "/roles/admin" --> <permission action="/actions/read-acl" subject="all" inheritable="true"/> <permission action="/actions/write-acl" subject="all" inheritable="true"/> <permission action="/actions/unlock" subject="all" inheritable="true"/> <permission action="/actions/read" subject="all" inheritable="true"/> <permission action="/actions/write" subject="/roles/data1" inheritable="true"/> <permission action="/actions/bind" subject="/roles/data1" inheritable="true"/> <objectnode classname="org.apache.slide.structure.SubjectNode" uri="/data1/marketing"> <permission action="/actions/write" subject="/roles/data1" inheritable="true" negative="true"/> <permission action="/actions/bind" subject="/roles/data1" inheritable="true"/> <objectnode classname="org.apache.slide.structure.SubjectNode" uri="/data1/marketing/widgets"> <permission action="/actions/read-acl" subject="owner" inheritable="true"/> </objectnode> <objectnode classname="org.apache.slide.structure.SubjectNode" uri="/data1/marketing/gadgets"> <permission action="/actions/read-acl" subject="owner" inheritable="true"/> <permission action="/actions/write" subject="/users/user3" inheritable="true"/> <permission action="/actions/bind" subject="/users/user3" inheritable="true"/> </objectnode> </objectnode> <objectnode classname="org.apache.slide.structure.SubjectNode" uri="/data1/accounts"> <objectnode classname="org.apache.slide.structure.SubjectNode" uri="/data1/accounts/p_and_l"> <permission action="/actions/read-acl" subject="owner" inheritable="true"/> <permission action="/actions/write" subject="/roles/data1" inheritable="true" negative="true"/> <permission action="/actions/bind" subject="/roles/data1" inheritable="true"/> </objectnode> <objectnode classname="org.apache.slide.structure.SubjectNode" uri="/data1/accounts/balance"> <permission action="/actions/read-acl" subject="owner" inheritable="true"/> </objectnode> </objectnode> </objectnode> <objectnode classname="org.apache.slide.structure.SubjectNode" uri="/data2"> <!-- Subject can be: any user "all" authenticated user "authenticated" unauthenticated user "unauthenticated" self "self" owner of resource "owner" a user "/users/john" a role "/roles/admin" --> <permission action="/actions/read-acl" subject="all" inheritable="true"/> <permission action="/actions/write-acl" subject="all" inheritable="true"/> <permission action="/actions/unlock" subject="all" inheritable="true"/> <permission action="/actions/read" subject="all" inheritable="true"/> <permission action="/actions/write" subject="/roles/data2" inheritable="true"/> <permission action="/actions/bind" subject="/roles/data2" inheritable="true"/> <objectnode classname="org.apache.slide.structure.SubjectNode" uri="/data2/development"> <permission action="/actions/write" subject="/roles/data2" inheritable="true" negative="true"/> <permission action="/actions/bind" subject="/roles/data2" inheritable="true"/> <objectnode classname="org.apache.slide.structure.SubjectNode" uri="/data2/development/code"> <permission action="/actions/read-acl" subject="owner" inheritable="true"/> </objectnode> <objectnode classname="org.apache.slide.structure.SubjectNode" uri="/data2/development/graphics"> <permission action="/actions/read-acl" subject="owner" inheritable="true"/> <permission action="/actions/write" subject="/users/user3" inheritable="true"/> <permission action="/actions/bind" subject="/users/user3" inheritable="true"/> </objectnode> <objectnode classname="org.apache.slide.structure.SubjectNode" uri="/data2/development/database"> <permission action="/actions/read-acl" subject="owner" inheritable="true"/> </objectnode> </objectnode> <objectnode classname="org.apache.slide.structure.SubjectNode" uri="/data2/testing"> <objectnode classname="org.apache.slide.structure.SubjectNode" uri="/data2/testing/scripts"> <permission action="/actions/read-acl" subject="owner" inheritable="true"/> <permission action="/actions/write" subject="/roles/data2" inheritable="true" negative="true"/> <permission action="/actions/bind" subject="/roles/data2" inheritable="true"/> </objectnode> <objectnode classname="org.apache.slide.structure.SubjectNode" uri="/data2/testing/results"> <permission action="/actions/read-acl" subject="owner" inheritable="true"/> </objectnode> </objectnode> </objectnode> <!-- Defining the rdbms store so lets keep it simple for now! --> <objectnode classname="org.apache.slide.structure.SubjectNode" uri="/rdbms"> <!-- Subject can be: any user "all" authenticated user "authenticated" unauthenticated user "unauthenticated" self "self" owner of resource "owner" a user "/users/john" a role "/roles/admin" --> <permission action="/actions/read-acl" subject="all" inheritable="true"/> <permission action="/actions/write-acl" subject="all" inheritable="true"/> <permission action="/actions/unlock" subject="all" inheritable="true"/> <permission action="/actions/read" subject="all" inheritable="true"/> <permission action="/actions/write" subject="/users/user1" inheritable="true"/> <permission action="/actions/bind" subject="/users/user1" inheritable="true"/> <permission action="/actions/write" subject="/roles/rdbms1" inheritable="true"/> <permission action="/actions/bind" subject="/roles/rdbms1" inheritable="true"/> <objectnode classname="org.apache.slide.structure.SubjectNode" uri="/rdbms/folder1"> <permission action="/actions/write" subject="/users/user1" inheritable="true"/> <permission action="/actions/bind" subject="/users/user1" inheritable="true"/> <objectnode classname="org.apache.slide.structure.SubjectNode" uri="/rdbms/folder1/subfolderA"> <permission action="/actions/write" subject="/users/user4" inheritable="true"/> <permission action="/actions/bind" subject="/users/user4" inheritable="true"/> </objectnode> <objectnode classname="org.apache.slide.structure.SubjectNode" uri="/rdbms/folder1/subfolderB"> <permission action="/actions/write" subject="/users/user1" inheritable="true" negative="true"/> <permission action="/actions/bind" subject="/users/user1" inheritable="true"/> </objectnode> </objectnode> </objectnode> <objectnode classname="org.apache.slide.structure.SubjectNode" uri="/rdbms2"> <!-- Subject can be: any user "all" authenticated user "authenticated" unauthenticated user "unauthenticated" self "self" owner of resource "owner" a user "/users/john" a role "/roles/admin" --> <permission action="/actions/read-acl" subject="all" inheritable="true"/> <permission action="/actions/write-acl" subject="all" inheritable="true"/> <permission action="/actions/unlock" subject="all" inheritable="true"/> <permission action="/actions/read" subject="all" inheritable="true"/> <permission action="/actions/write" subject="/users/user1" inheritable="true"/> <permission action="/actions/bind" subject="/users/user1" inheritable="true"/> <permission action="/actions/write" subject="/roles/rdbms1" inheritable="true" negative="true"/> <permission action="/actions/bind" subject="/roles/rdbms1" inheritable="true"/> <objectnode classname="org.apache.slide.structure.SubjectNode" uri="/rdbms2/folder2"> <permission action="/actions/write" subject="/users/user1" inheritable="true"/> <permission action="/actions/bind" subject="/users/user1" inheritable="true"/> <objectnode classname="org.apache.slide.structure.SubjectNode" uri="/rdbms2/folder2/subfolderC"> <permission action="/actions/write" subject="/users/user2" inheritable="true"/> <permission action="/actions/bind" subject="/users/user2" inheritable="true"/> </objectnode> <objectnode classname="org.apache.slide.structure.SubjectNode" uri="/rdbms2/folder2/subfolderD"> <permission action="/actions/write" subject="/users/user1" inheritable="true" negative="true"/> <permission action="/actions/bind" subject="/users/user1" inheritable="true"/> </objectnode> </objectnode> </objectnode> </objectnode> </data> </namespace> <!-- DeltaV global parameters ======================== * historypath (mandatory=no, default="/history"): Specifies a Slide path which determines the location where this DeltaV server stores history data. * workspacepath (mandatory=no, default="/workspace"): Specifies a Slide path which determines the location where this DeltaV server allows workspaces to reside. * workingresourcepath (mandatory=no, default="/workingresource"): Specifies a Slide path which determines the location where this DeltaV server stores working resources. * auto-version (mandatory=no, default="checkout-checkin"): Controls the DeltaV auto-version behaviour. * auto-version-control (mandatory=no, default="false"): Indicates if a resource just created by a PUT should be set under version-control. * versioncontrol-exclude (mandatory=no, default=""): Specifies a Slide path which determines resources which are excluded from version-control. The default value "" makes no path being excluded. * checkout-fork (mandatory=no, default="forbidden"): Controls the DeltaV check-out behaviour when a version is already checked-out or has a successor. * checkin-fork (mandatory=no, default="forbidden"): Controls the DeltaV check-out behaviour when a version has already a successor. * standardLivePropertiesClass (mandatory=no, default="org.apache.slide.webdav.util.resourcekind.AbstractResourceKind"): Determines the "agent" knowing about what the standard live properties are. It should be a loadable class containing the following static methods: - boolean isLiveProperty(String propName) - boolean isProtectedProperty(String propName) - boolean isComputedProperty(String propName) - Set getAllLiveProperties() - Set getAllProtectedProperties() - Set getAllComputedProperties() * uriRedirectorClass (mandatory=no, default="org.apache.slide.webdav.util.DeltavUriRedirector"): Determines the URI redirector class. The DeltaV URI redirector is in charge of the following redirections: - version URI to history URI, e.g. /history/2/1.4 to /history/2 - latest revision number for history resource to 0.0 - latest revision number for version resource to last URI token, e.g. /history/2/1.4 to 1.4 It should be a loadable class containing the following static methods: - String redirectUri(String uri) - NodeRevisionNumber redirectLatestRevisionNumber(String uri) --> <!-- #Phil - 12/05/2005 Have again taken this as verbatim. The only addition is to move the collections under the "/primary" collection. --> <parameter name="historypath">/history</parameter> <parameter name="workspacepath">/workspace</parameter> <parameter name="workingresourcepath">/workingresource</parameter> <parameter name="auto-version">checkout-checkin</parameter> <parameter name="auto-version-control">true</parameter> <parameter name="versioncontrol-exclude"/> <parameter name="checkout-fork">forbidden</parameter> <parameter name="checkin-fork">forbidden</parameter> <!-- Extractor configuration --> <extractors> <extractor classname="org.apache.slide.extractor.SimpleXmlExtractor" uri="/primary/files/articles/test.xml"> <configuration> <instruction property="title" xpath="/article/title/text()" /> <instruction property="summary" xpath="/article/summary/text()" /> </configuration> </extractor> <extractor classname="org.apache.slide.extractor.OfficeExtractor" uri="/primary/files/docs/"> <configuration> <instruction property="author" id="SummaryInformation-0-4" /> <instruction property="application" id="SummaryInformation-0-18" /> </configuration> </extractor> </extractors> <!-- Event configuration --> <events> <event classname="org.apache.slide.webdav.event.WebdavEvent" enable="true" /> <event classname="org.apache.slide.event.ContentEvent" enable="true" /> <event classname="org.apache.slide.event.ContentEvent" method="retrieve" enable="false" /> <event classname="org.apache.slide.event.EventCollection" enable="true" /> <event classname="org.apache.slide.event.TransactionEvent" enable="true" /> <event classname="org.apache.slide.event.MacroEvent" enable="true"/> <!--listener classname="org.apache.slide.util.event.EventLogger" /--> <listener classname="org.apache.slide.event.VetoableEventCollector" /> <listener classname="org.apache.slide.event.TransientEventCollector" /> <listener classname="org.apache.slide.webdav.event.NotificationTrigger"> <configuration> <notification include-events="false" /> <persist-subscriptions filename="subscriptions.xml" /> </configuration> </listener> <listener classname="org.apache.slide.extractor.PropertyExtractorTrigger" /> <listener classname="org.apache.slide.search.IndexTrigger"> <configuration> <indexer classname="org.apache.slide.search.LoggingIndexer" synchronous="false" uri="/files/articles" /> </configuration> </listener> <!-- Uncomment for cluster support. Be sure to local-host and repository-host --> <!-- <listener classname="org.apache.slide.cluster.ClusterCacheRefresher"> <configuration> <node local-host="local.host.domain" local-port="4444" repository-host="remote.host.domain" repository-port="8080" repository-protocol="http" username="root" password="root" base-uri="/files/" /> </configuration> </listener> --> <listener classname="org.apache.slide.macro.MacroPropertyUpdater"> <!-- Listener that updates some properties if resources are copied or moved. This requires MacroEvents enabled (at least methods copy and move) --> <configuration> <update-displayname>true</update-displayname> <update-owner-on-move>false</update-owner-on-move> <update-owner-on-copy>true</update-owner-on-copy> </configuration> </listener> </events> </slide> }}} --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
