Hi all,
When slide is configured to split the history collection into seperate stores <parameter name="historypath">/history/${store}</parameter>, then the history-collection-hack breaks the versioning part of slide.
I have attached an example domain.xml file. When history-collection-hack is set to false it works fine.
I tested this with 2.1rc1.
/jacob
<?xml version="1.0"?> <slide> <namespace name="slide"> <definition> <store name="tx"> <parameter name="tlock-timeout">120</parameter> <nodestore classname="org.apache.slide.store.txfile.TxXMLFileDescriptorsStore"> <parameter name="rootpath">store/metadata</parameter> <parameter name="workpath">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">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">store/content</parameter> <parameter name="workpath">work/content</parameter> <parameter name="defer-saving">true</parameter> <parameter name="timeout">120</parameter> </contentstore> </store> <scope match="/" store="tx"/> <store name="tx2"> <parameter name="tlock-timeout">120</parameter> <nodestore classname="org.apache.slide.store.txfile.TxXMLFileDescriptorsStore"> <parameter name="rootpath">storeh/metadata</parameter> <parameter name="workpath">workh/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">storeh/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">storeh/content</parameter> <parameter name="workpath">workh/content</parameter> <parameter name="defer-saving">true</parameter> <parameter name="timeout">120</parameter> </contentstore> </store> <scope match="/history/tx" store="tx2"/> <store name="files"> <parameter name="tlock-timeout">120</parameter> <nodestore classname="org.apache.slide.store.txfile.TxXMLFileDescriptorsStore"> <parameter name="rootpath">storef/metadata</parameter> <parameter name="workpath">worfk/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">storef/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">storef/content</parameter> <parameter name="workpath">workf/content</parameter> <parameter name="defer-saving">true</parameter> <parameter name="timeout">120</parameter> </contentstore> </store> <scope match="/files" store="files"/> <store name="files2"> <parameter name="tlock-timeout">120</parameter> <nodestore classname="org.apache.slide.store.txfile.TxXMLFileDescriptorsStore"> <parameter name="rootpath">storefh/metadata</parameter> <parameter name="workpath">workfh/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">storefh/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">storefh/content</parameter> <parameter name="workpath">workfh/content</parameter> <parameter name="defer-saving">true</parameter> <parameter name="timeout">120</parameter> </contentstore> </store> <scope match="/history/files" store="files2"/> </definition> <configuration> <!-- 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> <!-- Paths configuration --> <userspath>/users</userspath> <rolespath>/roles</rolespath> <actionspath>/actions</actionspath> <filespath>/files</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">2</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> <parameter name="history-collection-hack">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" --> <permission action="all" subject="/roles/root" inheritable="true"/> <permission action="/actions/read-acl" subject="all" inheritable="true" negative="true"/> <permission action="/actions/write-acl" subject="all" inheritable="true" negative="true"/> <permission action="/actions/unlock" subject="all" inheritable="true" negative="true"/> <permission action="/actions/read" subject="all" 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="all" subject="unauthenticated" inheritable="true" negative="true"/> <!-- /users/root represents the administrator --> <objectnode classname="org.apache.slide.structure.SubjectNode" uri="/users/root"> <revision> <property namespace="http://jakarta.apache.org/slide/" name="password">root</property> </revision> </objectnode> <!-- /users/john and /users/john2 represent authenticated users --> <objectnode classname="org.apache.slide.structure.SubjectNode" uri="/users/john"> <revision> <property namespace="http://jakarta.apache.org/slide/" name="password">john</property> </revision> </objectnode> <objectnode classname="org.apache.slide.structure.SubjectNode" uri="/users/john2"> <revision> <property namespace="http://jakarta.apache.org/slide/" name="password">john2</property> </revision> </objectnode> <!-- /users/guest represents an authenticated or unauthenticated guest user --> <objectnode classname="org.apache.slide.structure.SubjectNode" uri="/users/guest"> <revision> <property namespace="http://jakarta.apache.org/slide/" name="password">guest</property> </revision> </objectnode> <objectnode classname="org.apache.slide.structure.SubjectNode" uri="/users/projector"> <revision> <property namespace="http://jakarta.apache.org/slide/" name="password">projector</property> </revision> </objectnode> </objectnode> <!-- /roles --> <objectnode classname="org.apache.slide.structure.SubjectNode" uri="/roles"> <permission action="all" subject="self" inheritable="true"/> <permission action="all" subject="/roles/projector" inheritable="true"/> <permission action="all" subject="unauthenticated" inheritable="true" negative="true"/> <objectnode classname="org.apache.slide.structure.SubjectNode" uri="/roles/root"> <revision> <property name="group-member-set"><![CDATA[<D:href xmlns:D='DAV:'>/users/root</D:href>]]></property> </revision> </objectnode> <objectnode classname="org.apache.slide.structure.SubjectNode" uri="/roles/user"> <revision> <property name="group-member-set"><![CDATA[<D:href xmlns:D='DAV:'>/users/john</D:href><D:href xmlns:D='DAV:'>/users/john2</D:href><D:href xmlns:D='DAV:'>/users/root</D:href><D:href xmlns:D='DAV:'>/users/projector</D:href>]]></property> </revision> </objectnode> <objectnode classname="org.apache.slide.structure.SubjectNode" uri="/roles/guest"> <revision> <property name="group-member-set"><![CDATA[<D:href xmlns:D='DAV:'>/users/guest</D:href>]]></property> </revision> </objectnode> <objectnode classname="org.apache.slide.structure.SubjectNode" uri="/roles/projector"> <revision> <property name="group-member-set"><![CDATA[<D:href xmlns:D='DAV:'>/users/root</D:href><D:href xmlns:D='DAV:'>/users/projector</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> <objectnode classname="org.apache.slide.structure.SubjectNode" uri="/files"> <permission action="all" subject="unauthenticated" inheritable="true"/> <permission action="/actions/write" subject="/roles/user" inheritable="true"/> <permission action="/actions/read-acl" subject="owner" inheritable="true"/> </objectnode> <objectnode classname="org.apache.slide.structure.SubjectNode" uri="/projector"> <permission action="all" subject="unauthenticated" inheritable="true"/> <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> <!-- DeltaV: default history and workspace paths --> <objectnode classname="org.apache.slide.structure.SubjectNode" uri="/history"> <permission action="all" subject="unauthenticated" inheritable="true"/> <permission action="/actions/write" subject="/roles/user" inheritable="true"/> <permission action="/actions/read-acl" subject="owner" inheritable="true"/> <objectnode classname="org.apache.slide.structure.SubjectNode" uri="/history/tx"/> <objectnode classname="org.apache.slide.structure.SubjectNode" uri="/history/files"/> </objectnode> <objectnode classname="org.apache.slide.structure.SubjectNode" uri="/workspace"> <permission action="all" subject="unauthenticated" inheritable="true"/> <permission action="/actions/write" subject="/roles/user" 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="/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) --> <parameter name="historypath">/history/${store}</parameter> <parameter name="workspacepath">/workspace</parameter> <parameter name="workingresourcepath">/workingresource</parameter> <parameter name="auto-version">checkout-checkin</parameter> <parameter name="auto-version-control">false</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="/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="/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]