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/Getting_Started_Domain%2eXML

New page:
To be used in conjunction with the web.xml file available on ["Getting Started 
Web.XML"]

{{{
<?xml version="1.0"?>
<!-- Phillip Burnside, 12/05/2005.
I have customised this Domain.xml file to simplify the implementation of a 
SLIDE namespace and store.
You will find an original Domain.sample available within the bundled software 
downloaded from Apache.
I have included comments with the identifier "#Phil - dd/mm/yyyy"
-->
<slide>
    <namespace name="primary">
        <definition>
            <store name="primary">
                <parameter name="tlock-timeout">120</parameter>
                <nodestore 
classname="org.apache.slide.store.txfile.TxXMLFileDescriptorsStore">
<!-- #Phil 12/05/2005
I changed the default on these paths to point to a manageable subdirectory.
The default is "C:/" but it doesn't tell you that
-->
                    <parameter 
name="rootpath">D:/SLIDESTORE/primary/store/metadata</parameter>
                    <parameter 
name="workpath">D:/SLIDESTORE/primary/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">/primary/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">/primary/store/content</parameter>
                    <parameter name="workpath">/primary/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
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="primary"/>
        </definition>
        <configuration>
<!-- #Phil - 12/05/2005
Even though you may have a store mapping to the path "primary" it is best to 
define the actions
at the highest level. This is done so that all further stores can use these 
bindings without
having to redefine them. The security for these actions will still be 
controlled within the 
store security.
-->
            <!-- 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 /primary. 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>/primary/users</userspath>
            <rolespath>/roles</rolespath>
            <actionspath>/actions</actionspath>
            <filespath>/primary/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               "/primary/users/john"
                a role               "/primary/roles/admin"
                -->
<!-- #Phil - 12/05/2005
Now this is the fun bit. I have taken out the samples provided by the apache 
team as they do seem to confuse things. 
I have defined 2 users - "user1" and "user2". User1 gets the properties to 
write files explicitly whilst
user2 gets them by being a member of a role.
You will notice that you have to define the access rights at each node level in 
the collection tree. Hence the definitions
below which define actions available at "/". If you remove a permission for 
either user1 or role editor then that
permission will be removed for all collections beneath "/".
By all means play with this until you are happy that you have it straight. Once 
you do then look at the sample provided
by Apache and it should make alot more sense.
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="/actions/write" 
subject="/primary/users/user1" inheritable="true"/>
                    <permission action="/actions/bind" 
subject="/primary/users/user1" inheritable="true"/>
                    <permission action="/actions/write" subject="/roles/editor" 
inheritable="true"/>
                    <permission action="/actions/bind" subject="/roles/editor" 
inheritable="true"/>
                <!-- /users -->
                <objectnode classname="org.apache.slide.structure.SubjectNode" 
uri="/primary/users">
                    <permission action="all" subject="self" inheritable="true"/>
                    <permission action="all" subject="/primary/roles/projector" 
inheritable="true"/>
                    <permission action="" subject="unauthenticated" 
inheritable="true" negative="true"/>
                    <objectnode 
classname="org.apache.slide.structure.SubjectNode" uri="/primary/users/user1">
                        <revision>
                            <property  name="password">user1</property> 
                        </revision>
                    </objectnode>
                    <objectnode 
classname="org.apache.slide.structure.SubjectNode" uri="/primary/users/user2">
                        <revision>
                            <property  name="password">user2</property> 
                        </revision>
                    </objectnode>
                </objectnode>
                <!-- /roles -->
                <objectnode classname="org.apache.slide.structure.SubjectNode" 
uri="/roles">
                    <objectnode 
classname="org.apache.slide.structure.SubjectNode" uri="/roles/editor">
                        <revision>
                            <property name="group-member-set"><![CDATA[<D:href 
xmlns:D='DAV:'>/primary/users/user2</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 - 12/05/2005
This is what I meant by inheriting through the collection nodes. If you take 
the permission away from "/primary"
then the user/role will not have the permission at "/primary/main". Have a 
go...it can be entertaining.
In this build I have disables "/roles/editor" from adding files to "/primary" 
and therefore "/primary/main"
To enable it either remove the "negative=" parameter or set it to "false"
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="/primary">
                            <permission action="/actions/write" 
subject="/primary/users/user1" inheritable="true"/>
                            <permission action="/actions/bind" 
subject="/primary/users/user1" inheritable="true"/>
                          <permission action="/actions/write" 
subject="/roles/editor" inheritable="true" negative="true"/>
                          <permission action="/actions/bind" 
subject="/roles/editor" inheritable="true"/>
                        <objectnode 
classname="org.apache.slide.structure.SubjectNode" uri="/primary/main">
                      <permission action="/actions/write" 
subject="/primary/roles/root" inheritable="true"/>
                        <permission action="/actions/read-acl" subject="owner" 
inheritable="true"/>
                                  <permission action="/actions/write" 
subject="/primary/users/user1" inheritable="true"/>
                                  <permission action="/actions/bind" 
subject="/primary/users/user1" inheritable="true"/>
                                <permission action="/actions/write" 
subject="/primary/roles/editor" inheritable="true"/>
                                <permission action="/actions/bind" 
subject="/primary/roles/editor" inheritable="true"/>
                            </objectnode>
                    </objectnode>
<!-- #Phil - 12/05/2005
These collections were all defined within the base build. All I have done is 
move them under the "/primary" collection.
I have done this to isolate the files from any additional stores which might be 
defined.
-->
                <objectnode classname="org.apache.slide.structure.SubjectNode" 
uri="/primary/projector">
                    <permission action="/actions/write" 
subject="/primary/roles/projector" inheritable="true"/>
                    <permission action="/actions/read-acl" subject="owner" 
inheritable="true"/>
                        <objectnode 
classname="org.apache.slide.structure.SubjectNode" 
uri="/primary/projector/work">
                        </objectnode>
                </objectnode>
                <!-- DeltaV: default history and workspace paths -->
                <objectnode classname="org.apache.slide.structure.SubjectNode" 
uri="/primary/history">
                    <permission action="all" subject="unauthenticated" 
inheritable="true"/>
                    <permission action="/actions/write" 
subject="/primary/roles/user" 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="/primary/workspace">
                    <permission action="all" subject="unauthenticated" 
inheritable="true"/>
                    <permission action="/actions/write" 
subject="/primary/roles/user" inheritable="true"/>
                    <permission action="/actions/read-acl" subject="owner" 
inheritable="true"/>
                </objectnode>
                <objectnode classname="org.apache.slide.structure.SubjectNode" 
uri="/primary/workingresource">
                    <permission action="all" subject="unauthenticated" 
inheritable="true"/>
                    <permission action="/actions/write" 
subject="/primary/roles/user" inheritable="true"/>
                    <permission action="/actions/read-acl" subject="owner" 
inheritable="true"/>
                </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">/primary/history</parameter>
    <parameter name="workspacepath">/primary/workspace</parameter>
    <parameter name="workingresourcepath">/primary/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="/primary/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]

Reply via email to